package types

type ReqGetProfiles struct {
	ThingId string `json:"thing_id" form:"thing_id" binding:"required"`
}

type VideoEncoder struct {
	ThingId          string `json:"thing_id" form:"thing_id" binding:"required"`
	Token            string `json:"Token" form:"Token" binding:"required"`
	BitrateLimit     int    `json:"BitrateLimit" form:"BitrateLimit" binding:"required"`
	Encoding         string `json:"Encoding" form:"Encoding" binding:"required"`
	EncodingInterval int    `json:"EncodingInterval" form:"EncodingInterval" binding:"required"`
	FrameRateLimit   int    `json:"FrameRateLimit" form:"FrameRateLimit" binding:"required"`
	GovLength        int    `json:"GovLength" form:"GovLength" binding:"required"`
	Mpeg4Profile     string `json:"Mpeg4Profile" form:"Mpeg4Profile" binding:"required"`
	Quality          int    `json:"Quality" form:"Quality" binding:"required"`
	ResolutionHeight int    `json:"ResolutionHeight" form:"ResolutionHeight" binding:"required"`
	ResolutionWidth  int    `json:"ResolutionWidth" form:"ResolutionWidth" binding:"required"`
}

type ReqContinuousMove struct {
	ProfileToken string `json:"ProfileToken" form:"ProfileToken" binding:"required"`
	ThingId      string `json:"thing_id" form:"thing_id" binding:"required"`
	X            string `json:"x,omitempty" form:"x"` // left right 水平方向 -1 到 1
	Y            string `json:"y,omitempty" form:"y"` // up down 垂直方向 -1 到 1
	Z            string `json:"z,omitempty" form:"z"` // 焦距  大 小
	Speed        int    `json:"speed,omitempty" form:"speed"`
}

type ReqStopMove struct {
	ProfileToken string `json:"ProfileToken" form:"ProfileToken" binding:"required"`
	ThingId      string `json:"thing_id" form:"thing_id" binding:"required"`
}

type ReqGetPresets struct {
	ThingId string `json:"thing_id" form:"thing_id" binding:"required"`
}

type ReqSetPreset struct {
	ThingId      string `json:"thing_id" form:"thing_id" binding:"required"`
	PresetName   string `json:"preset_name" form:"preset_name" binding:"required"`
	PresetToken  string `json:"preset_token" form:"preset_token" binding:"required"`
	ProfileToken string `json:"ProfileToken" form:"ProfileToken" binding:"required"`
}

type ReqGotoPreset struct {
	ThingId      string `json:"thing_id" form:"thing_id" binding:"required"`
	PresetToken  string `json:"preset_token" form:"preset_token" binding:"required"`
	ProfileToken string `json:"ProfileToken" form:"ProfileToken" binding:"required"`
}
type ReqRemovePreset struct {
	ThingId      string `json:"thing_id" form:"thing_id" binding:"required"`
	PresetToken  string `json:"preset_token" form:"preset_token" binding:"required"`
	ProfileToken string `json:"ProfileToken" form:"ProfileToken" binding:"required"`
}

type ReqFocusMove struct {
	ThingId          string  `json:"thing_id" form:"thing_id" binding:"required"`
	VideoSourceToken string  `json:"VideoSourceToken" form:"VideoSourceToken" binding:"required"`
	Type             string  `json:"Type" form:"Type"`
	Speed            float64 `json:"speed" form:"speed"`
	Position         float64 `json:"position" form:"position"`
}
